package StreanmLearn.Practice;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public class 练习三 {
    public static void main(String[] args) {
        /*
        现在有两个ArrayList集合，
            第一个集合中：存储6名男演员的名字和年龄。第二个集合中：存储6名女演员的名字和年龄。姓名和年龄中间用逗号隔开。比如：张三，23
            要求完成如下的操作：
            1，男演员只要名字为3个字的前两人
            2，女演员只要姓杨的，并且不要第一个
            3，把过滤后的男演员姓名和女演员姓名合并到一起
            4，将上一步的演员信息封装成Actor对象。
            5，将所有的演员对象都保存到List集合中。
            备注：演员类 Actor，属性只有一个：name，age
         */
        //6名男演员的名字和年龄
        ArrayList<String> man=new ArrayList<>();
        Collections.addAll(man,"张无忌,23","李四,32","张强,64","张三丰,23","王五,65","谢广坤,17");
        //6名女演员的名字和年龄
        ArrayList<String> woman=new ArrayList<>();
        Collections.addAll(woman,"妲己,33","杨贵妃,32","杨玉环,34","蔡文姬,23","王昭君,25","杨素,21");

        //过滤男的要求   男演员只要名字为3个字的前两人
        Stream<String> newMan=man.stream()
                //分隔
                // 判断名字长度为3
                .filter(s -> s.split(",")[0].length() == 3)
                //只拿前面两个
                .limit(2);

        //过滤女的要求   女演员只要姓杨的，并且不要第一个
        Stream<String> newWoman = woman.stream()
                //提取姓杨的
                .filter(s ->s.split(",")[0].startsWith("杨"))
                //跳过第一个
                .skip(1);

        //合并   merge
//        Stream.concat(newMan, newWoman).map(new Function<String, Actor>() {
//            @Override
//            public Actor apply(String s) {
//                String name = s.split(",")[0];
//                int age = Integer.parseInt(s.split(",")[1]);
//
//                return new Actor(name,age);
//            }
//        }).forEach(s-> System.out.println(s));

        List<Actor> list=Stream.concat(newMan,newWoman)
                .map(s->new Actor(s.split(",")[0],Integer.parseInt(s.split(",")[1])))
                .collect(Collectors.toList());

        System.out.println(list);

    }
}
